﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;

namespace FasterWPF
{
    public class FontSettings
    {
        public double FontSize
        {
            get;
            set;
        }

        public string FontFamily
        {
            get;
            set;
        }

        public FontWeight FontWeight
        {
            get;
            set;
        }

        public FontStyle FontStyle
        {
            get;
            set;
        }
    }

    public class BorderSettings
    {
        public double Width
        {
            get;
            set;
        }

        public double Height
        {
            get;
            set;
        }

        public Brush BorderBrush
        {
            get;
            set;
        }

        public Thickness BorderThickness
        {
            get;
            set;
        }

        public Thickness Padding
        {
            get;
            set;
        }

        public CornerRadius CornerRadius
        {
            get;
            set;
        }
    }

    public class DockPanelSettings
    {
        public bool LastChildFill
        {
            get;
            set;
        }
    }

    public class WrapPanelSettings
    {
        public double ItemWidth
        {
            get;
            set;
        }

        public double ItemHeight
        {
            get;
            set;
        }

        public Orientation Orientation
        {
            get;
            set;
        }
    }

    public class HorizontalPanelSettings
    {
        public double Height
        {
            get;
            set;
        }
    }

    public class UniformGridSettings
    {
        public int NumRows
        {
            get;
            set;
        }

        public int NumColumns
        {
            get;
            set;
        }

        public double Width
        {
            get;
            set;
        }

        public double Height
        {
            get;
            set;
        }
    }

    public class CanvasSettings
    {
        public Brush BackgroundColor
        {
            get;
            set;
        }

        public Brush MouseOverColor
        {
            get;
            set;
        }

        public double Width
        {
            get;
            set;
        }

        public double Height
        {
            get;
            set;
        }
    }

    public class GridSettings
    {
        public int NumRows
        {
            get;
            set;
        }

        public int NumColumns
        {
            get;
            set;
        }

        public List<double> ColWidths
        {
            get;
            set;
        }

        public List<GridUnitType> ColUnitTypes
        {
            get;
            set;
        }

        public List<double> RowHeights
        {
            get;
            set;
        }

        public List<GridUnitType> RowUnitTypes
        {
            get;
            set;
        }

        public double Width
        {
            get;
            set;
        }

        public double Height
        {
            get;
            set;
        }
    }

    public class TitleSettings
    {
        public string TitleCaption
        {
            get;
            set;
        }

        public Brush TitleBackground
        {
            get;
            set;
        }

        public Brush TitleForeground
        {
            get;
            set;
        }

        public Thickness TitleMargin
        {
            get;
            set;
        }

        public double TitleHeight
        {
            get;
            set;
        }

        public FontSettings TitleFontSettings
        {
            get;
            set;
        }
    }

    public class LabelSettings
    {
        public string LabelCaption
        {
            get;
            set;
        }

        public Brush LabelBackground
        {
            get;
            set;
        }

        public Brush LabelForeground
        {
            get;
            set;
        }

        public Thickness LabelMargin
        {
            get;
            set;
        }

        public double? LabelHeight
        {
            get;
            set;
        }

        public FontSettings LabelFontSettings
        {
            get;
            set;
        }

        public double LabelMinWidth
        {
            get;
            set;
        }
    }

    public class ComboBoxSettings
    {
        public double ScrollViewerHeight
        {
            get;
            set;
        }

        public double ScrollViewerWidth
        {
            get;
            set;
        }

        public string ScrollViewerMouseOverColor
        {
            get;
            set;
        }

        public string ScrollViewerPressedColor
        {
            get;
            set;
        }

        public string ScrollViewerBackgroundColor
        {
            get;
            set;
        }

        public FasterWPF.Helpers.ItemTextRows ComboItemTextRows
        {
            get;
            set;
        }

        public Thickness ComboItemBorderThickness
        {
            get;
            set;
        }

        public Brush ComboItemBorderColor
        {
            get;
            set;
        }

        public double ComboItemMinWidth
        {
            get;
            set;
        }

        public ComboStyles ComboBoxStyle
        {
            get;
            set;
        }

        public Brush HighlightForegroundColor
        {
            get;
            set;
        }

        public Brush HighlightBackgroundColor
        {
            get;
            set;
        }
    }

    public class ListBoxSettings
    {
        public double Height
        {
            get;
            set;
        }

        public double Width
        {
            get;
            set;
        }

        public string ScrollViewerMouseOverColor
        {
            get;
            set;
        }

        public string ScrollViewerPressedColor
        {
            get;
            set;
        }

        public string ScrollViewerBackgroundColor
        {
            get;
            set;
        }

        public FasterWPF.Helpers.ItemTextRows ItemTextRows
        {
            get;
            set;
        }

        public Thickness ItemBorderThickness
        {
            get;
            set;
        }

        public Brush ItemBorderColor
        {
            get;
            set;
        }

        public double ItemMinWidth
        {
            get;
            set;
        }

        public double ItemHeight
        {
            get;
            set;
        }

        public string HighlightBackgroundColor
        {
            get;
            set;
        }

        public string HighlightForegroundColor
        {
            get;
            set;
        }
    }
}
